package com.bootdo.wx.service;

import com.bootdo.common.domain.Tree;
import com.bootdo.common.utils.Query;
import com.bootdo.common.utils.R;
import com.bootdo.wx.domain.MemberUserDO;
import com.github.pagehelper.PageInfo;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 用户,会员
 * 
 * @author chglee
 * @email 1992lcg@163.com
 * @date 2019-05-22 15:32:07
 */
public interface MemberUserService {
	
	MemberUserDO get(String id);
	
	List<MemberUserDO> list(Map<String, Object> map);
	
	int count(Map<String, Object> map);
	
	int save(MemberUserDO memberUser);
	
	int update(MemberUserDO memberUser);
	
	int remove(String id);
	
	int batchRemove(String[] ids);

	Map<String,Object> getMemberCenter(Map<String, Object> map);

	Map<String,Object> setUp(Map<String, Object> map);

	PageInfo<Map<String,Object>> getMyFans(Map<String, Object> map);

	Map<String,Object> getMyTeam(Map<String, Object> map);

	MemberUserDO queryByOpenid(String openId);

	List<Map<String,Object>> getOrderEcharts(Map<String,Object> map);

	List<Map<String,Object>> allMoneyEcharts(Map<String,Object> map);

	List<Map<String,Object>> allUserEcharts(Map<String,Object> map);

	MemberUserDO getByCode(String code);

	R getExtension(Map<String, Object> params);

	List<Map<String,Object>> getMoneyListByUser(Map<String,Object> map);

	int getMoneyListByUserCount(Map<String, Object> map);

	void exportExcel(Map<String,Object> map,List<Map<String,Object>> moneyList, ServletOutputStream out,HttpServletRequest request);

	List<Map<String,Object>> getMyFansH(Map<String,Object> map);

	int getMyFansHCount(Map<String, Object> map);

	BigDecimal getShoppingNum(Map<String,Object> map);

	List<Map<String,Object>> getShoppingList(Map<String,Object> map);

	int getShoppingListCount(Map<String, Object> map);

	void shoppingExportExcel(Map<String,Object> map,List<Map<String,Object>> moneyList, ServletOutputStream out,HttpServletRequest request);

	int getZtChildrenNUm(Map<String, Object> map);

	R updateLevel(MemberUserDO userDO);

	/**
	 * @author long
	 * 2020年6月15日上午11:02:42
	 * 方法释义:
	 * 参数:
	 *
	 */
	MemberUserDO findByPhone(String phoneNumber);

	/**
	 * @author long
	 * 2020年6月20日下午3:03:18
	 * 方法释义:
	 * 参数:
	 *
	 */
	R setMemberDays(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年6月20日下午3:28:30
	 * 方法释义:
	 * 参数:
	 *
	 */
	R getOverdue(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年9月16日下午3:16:08
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<MemberUserDO> likeList(Map<String, Object> map);

	/**
	 * @author long
	 * 2020年9月16日下午3:59:25
	 * 方法释义:
	 * 参数:
	 *
	 */
	int likeCount(Map<String, Object> params);

	/**
	 * @author long
	 * 2020年9月17日下午7:33:59
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<MemberUserDO> getUpUser(String id);

	/**
	 * @author long
	 * 2020年9月21日下午7:59:09
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<Map<String, Object>> allUserEchartsByToday(Map<String, Object> params);

	/**
	 * @author long
	 * 2020年9月23日下午8:29:07
	 * 方法释义:
	 * 参数:
	 *
	 */
	List<Map<String, Object>> getOrderCensus(Map<String, Object> params);

	/**
	 * @author long
	 * 2020年9月23日下午8:29:29
	 * 方法释义:
	 * 参数:
	 *
	 */
	int getCountOrderCensus(Map<String, Object> params);

    Tree<MemberUserDO> getTree(String userId);

	Map<String, Object> getTodayPrice(Map<String, Object> params);

    Map<String, Object> getAllPrice(Map<String, Object> params);

    Map<String, Object> getTeamDetails(Map<String, Object> params);

	PageInfo<Map<String,Object>> titleList(Map<String, Object> params);

	Map<String, Object> getNoticeDetail(Map<String, Object> params);

	List<String> getMemberHistory(Map<String, Object> params);

	Map<String, Object> getcomUser(Map<String, Object> params);
}
